<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of ProyectStatesController
 *
 * @author wilavel
 */
class ProyectStatesController extends AppController {

    //put your code here
    public $name = "ProyectStates";

    function index() {
        $proyect_id = $this->Session->read('proy_id');
        if ($proyect_id != "") {
            $this->set('proyect_id', $proyect_id);
            $options['conditions'] = array('ProyectState.proyect_id' => $proyect_id);
            $options['joins'] = array(
                array(
                    'table' => 'proyects',
                    'alias' => 'Proyect',
                    'type' => 'left',
                    'conditions' => array(
                        'Proyect.id=ProyectState.proyect_id',
                    ),
                ),
                array(
                    'table' => 'states',
                    'alias' => 'State',
                    'type' => 'left',
                    'conditions' => array(
                        'State.id=ProyectState.state_id',
                    ),
                ),
                array(
                    'table' => 'users',
                    'alias' => 'User',
                    'type' => 'left',
                    'conditions' => array(
                        'User.id=ProyectState.user_id',
                    ),
                )
            );
            $options['fields'] = array('Proyect.codigo', 'ProyectState.observacion', 'ProyectState.fecha_inicio', 'ProyectState.id', "State.nombre", 'ProyectState.user_id', 'User.id', 'User.nombre', 'User.primer_apellido');
            $options['order'] = array('ProyectState.fecha_inicio' => 'DESC', 'ProyectState.id' => 'DESC');
            $estados = $this->ProyectState->find('all', $options);
            $this->set('estados', $estados);
        } else {
            $this->Session->setFlash('No ha seleccionado Proyecto');
            $this->redirect(array('controller' => 'Pages', 'action' => 'display'));
        }
    }

    function add($proyect_id) {

        App::Import('model', 'State');
        $st = new State();
        App::Import('model', 'UserProyect');
        $up = new UserProyect();

        $cont = 0;
        $cont = $up->find('count', array('conditions' => array('UserProyect.user_id' => $this->Auth->user('id'), 'UserProyect.proyect_id' => $proyect_id)));
        if ($cont == 0) {
            $this->Session->setFlash("No tiene asignado este proyecto", 'flash_custom');
            $this->redirect(array('controller' => 'ProyectStates', 'action' => 'index', $proyect_id));
        }
        $this->set('proyect_id', $proyect_id);
        $this->set('user_id', $this->Auth->user('id'));

        $lista = $st->find('list', array('fields' => array('State.id', 'State.nombre'), 'order' => array("State.nombre" => "asc")));
        $this->set('states', $lista);
        if (!empty($this->data)) {

            if ($this->ProyectState->saveAll($this->data)) {
                $this->Session->setFlash("Registro agregado con éxito", 'flash_custom');
                $this->redirect(array('controller' => 'ProyectStates', 'action' => 'index', $proyect_id));
            }
        } else {
            
        }
    }

    function edit($id) {

        App::Import('model', 'State');
        $st = new State();

        $this->set('user_id', $this->Auth->user('id'));

        $lista = $st->find('list', array('fields' => array('State.id', 'State.nombre'), 'order' => array("State.nombre" => "asc")));
        $this->set('states', $lista);
        if (!empty($this->data)) {

            if ($this->ProyectState->saveAll($this->data)) {
                $this->Session->setFlash("Registro editado con éxito", 'flash_custom');
                $this->redirect(array('controller' => 'ProyectStates', 'action' => 'index', $this->data['ProyectState']['proyect_id']));
            }
        } else {
            $this->data = $this->ProyectState->find('first', array('conditions' => array('ProyectState.id' => $id)));
            if ($this->Auth->user('id') != $this->data['ProyectState']['user_id']) {
                $this->Session->setFlash("Este registro solo puede ser editado por la persona que lo creó", 'flash_custom');
                $this->redirect(array('controller' => 'ProyectStates', 'action' => 'index', $this->data['ProyectState']['proyect_id']));
            }
        }
    }

    function delete($id, $proyect_id) {

        $user = $this->ProyectState->find('first', array('conditions' => array('ProyectState.id' => $id)));

        if ($this->Auth->user('id') != $user['ProyectState']['user_id']) {
            $this->Session->setFlash("Este registro solo puede ser borrado por la persona que lo creó", 'flash_custom');
            $this->redirect(array('controller' => 'ProyectStates', 'action' => 'index', $proyect_id));
        } else {

            if ($this->ProyectState->delete($id)) {
                $this->Session->setFlash("Registro borrado correctamente", 'flash_custom');
                $this->redirect(array('controller' => 'ProyectStates', 'action' => 'index', $proyect_id));
            }
        }
    }

    public function report() {
        $this->layout = "csv";

        ini_set('max_execution_time', 600);
        $filename = "Reporte_de_observaciones" . date("Y-m-d") . ".csv";
        $csv_file = fopen('php://output', 'w');
        header('Content-type: application/csv');
        header('Content-Disposition: attachment; filename="' . $filename . '"');

        // Las cabeceras del archivo csv  
        $header_row = array('código', 'territorial', 'convocatoria', 'estado', 'fecha inicio', 'observación', 'usuario', 'nombre', 'primer apellido');

        $newRow = array();

        foreach ($header_row as $a) {
            $newRow[] = iconv('UTF-8', 'Windows-1252', $a);
        }

        fputcsv($csv_file, $newRow, ';', '"');

        //Selecciono todas las observaciones
        $sql = "SELECT Proyect.codigo, a.nombre, Branch.nombre, State.nombre, ProyectState.fecha_inicio, ProyectState.observacion, User.username, User.primer_apellido, User.nombre FROM proyect_states ProyectState
                LEFT JOIN proyects Proyect ON Proyect.id = ProyectState.proyect_id
                LEFT JOIN branches Branch ON Branch.id = Proyect.branch_id
                LEFT JOIN users User ON User.id = ProyectState.user_id
                LEFT JOIN states State ON State.id = ProyectState.state_id
                LEFT JOIN calls a ON a.id = Proyect.call_id
                WHERE 1";
        $observaciones = $this->ProyectState->query($sql);

        foreach ($observaciones as $observacion) {
            //Imprimo cada fila
            $fila = array(
                $observacion['Proyect']['codigo'],
                $observacion['Branch']['nombre'],
                $observacion['a']['nombre'],
                $observacion['State']['nombre'],
                $observacion['ProyectState']['fecha_inicio'],
                $observacion['ProyectState']['observacion'],
                $observacion['User']['username'],
                $observacion['User']['primer_apellido'],
                $observacion['User']['nombre']
            );

            $newRow = array();

            foreach ($fila as $a) {
                $newRow[] = iconv('UTF-8', 'Windows-1252', $a);
            }

            fputcsv($csv_file, $newRow, ';', '"');
        }

        fclose($csv_file);
    }

}

?>
